package org.company.ci.services;

import java.util.ArrayList;

import org.company.ci.daos.CategoriaDao;
import org.company.ci.daos.ProductoDao;
import org.company.ci.domain.Categoria;
import org.company.ci.domain.Producto;

public class CategoriaService {
	
	private CategoriaDao categoriaDao;
	
	private ProductoDao productoDao;
	
	public void saveOrEditCategoria(Categoria categoria) throws Exception {
		if (categoria.getIdCategoria() == null) {
			categoriaDao.saveEntity(categoria);
		} else {
			categoriaDao.updateEntity(categoria);
		}
	}
	
	public Categoria getCategoriaById(Long idCategoria) throws Exception {
		return categoriaDao.getBObyId(idCategoria.toString(), "idCategoria");
	}
	public void deleteCategoria(Categoria categoria) throws Exception {
		isUsedCategoria(categoria);
		categoriaDao.deleteEntity(categoria);
	}
	
	private void isUsedCategoria(Categoria categoria) throws Exception {
		Producto producto = productoDao.getProductoByIdCategoria(categoria.getIdCategoria());
		productoDao.clearSession();
		if (producto != null) {
			throw new Exception("No se puede eliminar la Categoria porque esta en uso por un Producto");
		}
		
		
	}

	public ArrayList<Categoria> getListCategorias() throws Exception {
		return (ArrayList<Categoria>) categoriaDao.getAllEntity("");
	}
	public CategoriaDao getCategoriaDao() {
		return categoriaDao;
	}

	public void setCategoriaDao(CategoriaDao categoriaDao) {
		this.categoriaDao = categoriaDao;
	}

	public ProductoDao getProductoDao() {
		return productoDao;
	}

	public void setProductoDao(ProductoDao productoDao) {
		this.productoDao = productoDao;
	}

}
